package cn.zyq.ykb.beans.task;

import cn.zyq.ykb.beans.config.ConfigTaskType;
import cn.zyq.ykb.beans.user.User;
import cn.zyq.ykb.system.common.BaseBean;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.persistence.*;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 我的任务领取对象 myTask
 *
 * @author SystemAuth
 * @date 2023-05-22
 */
@Data
@Entity
@Table(name = "`myTask`")
@JsonInclude(value = JsonInclude.Include.NON_NULL)
public class MyTask  extends BaseBean implements Serializable {
    /**
     * 主键id，用于关联
     */
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY, generator = "JDBC")
    @Column(name = "`myTaskID`")
    @ApiModelProperty("主键id，用于关联")
    private Integer myTaskID;
    /**
     * 任务ID
     */
    @Column(name = "`taskID`")
    @ApiModelProperty("任务ID")
    private Integer taskID;
    /**
     * 用户ID
     */
    @Column(name = "`userID`")
    @ApiModelProperty("用户ID")
    private Integer userID;
    /**
     * 任务状态（进行中，待审核，已完成，未完成，补交）
     */
    @Column(name = "`state`")
    @ApiModelProperty("任务状态（进行中，待审核，已完成，未完成，补交）")
    private Integer state;
    /**
     * 任务状态（进行中，待审核，已完成，未完成，补交）
     */
    @Column(name = "`cTime`")
    @ApiModelProperty("任务过期时间")
    private LocalDateTime cTime;
    /**
     * 任务价格
     */
    @Column(name = "`price`")
    @ApiModelProperty("任务价格")
    private BigDecimal price;
    /**
     * 实得价格
     */
    @Column(name = "`actualPrice`")
    @ApiModelProperty("实得价格")
    private BigDecimal actualPrice;
    /**
     * 类型（1正常，2项目外放）
     */
    @Column(name = "`status`")
    @ApiModelProperty("类型（1正常，2项目外放）")
    private Integer status;

    @Transient
    @ApiModelProperty("任务列表")
    private Task task;

    @Transient
    @ApiModelProperty("任务列表")
    private User user;

    @Transient
    @ApiModelProperty("任务类型")
    private ConfigTaskType configTaskType;

    @Transient
    @ApiModelProperty("领取审核列表")
    private MyTaskAudit myTaskAudit;

    @Transient
    @ApiModelProperty("任务步骤信息")
    private List<TaskStep> taskSteps;
}
